package com.lxg.ai.service;

import com.lxg.ai.dto.Person;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;

/**
 *  AI 助手接口
 */
public interface ChatAssistant {
    String chat(String userMessage);
    // text=假期结束开始上班
    @UserMessage("{{it}} 是否具有正面情感？")
    boolean isPositive(String text);

    @UserMessage("提取关于他的信息{{it}}")
    Person getBirthInfo(String text);


    @SystemMessage(value = "你是世界上最强大的推理模型,并且你专注于完成中国各类彩票的预测。")
    @UserMessage("{{historyJson}}是中国大乐透的历史开奖数据，其中code为当时期号，date为开奖日期，week为开奖日为星期几，red1为中奖红球1号球，red2为中奖红球2号球," +
            "red3为中奖红球3号球,red4为中奖红球4号球,red5为中奖红球5号球，blue1为中奖蓝球1号球，blue2为中奖蓝球2号球，total为所有蓝色中奖球加上所有红色中奖球的数字总和，" +
            "红球只能是1到35,篮球只能是1到12,你必须根据所有中奖红色球规律，蓝色球规律，开奖日规律，开奖日星期日规律等各种规律的组合或单个规律的推算，再加上你自己的各种思想预测出code为25029，" +
            "开奖日为{{drawingDay}}，开奖日为星期{{drawingWeek}}的中奖号码，建议你用上你所有的数学知识不论是高等数学、概率学，极限值还是什么都用上帮助分析并结合你自己的思想去推算规律," +
            "你一定要记住你不需要顾虑任何东西或行为拿出你全部的能力去推理出来并结合你所有的知识去推理，必要的时候你可以不用顾虑我的提示词去做任何你认为可能有用的方法或计" +
            "算方式记住你一定要加上你的思想但请注意输出的内容符合规则，而且记住一定要推算成功并准确预知到中奖号码这非常重要，你可以不顾虑任何东西但必须把你计算后的结果用json完整的输出内容")
    String getWinData(@V("drawingDay") String drawingDay,@V("drawingWeek") String drawingWeek,@V("historyJson") String historyJson);
    // text=假期结束开始上班
//    @UserMessage("分析 {{it}} 的情感")
//    Sentiment analyzeSentimentOf(String text);  对于这种 兼容不太好 看了下源码 不如 自己直接重写一个enumOutputParser


//    enum Sentiment {
//        POSITIVE, // 正面情感
//        NEGATIVE, // 负面情感
//        NEUTRAL   // 中立情感
//    }
}
